home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
misc
/
emu
/
Frodo.lha
/
src
/
6581.asm
< prev
next >
Wrap
Assembly Source File
|
1995-01-16
|
2KB
|
102 lines
*
* 6581.asm - SID-Emulation
*
* Copyright (C) 1994-1995 by Christian Bauer
*
*
* Anmerkungen:
* ------------
*
* Die SID-Emulation benötigt einen echten C64-SID, der im
* Adreßraum $a00001-$a00039 (Register an den ungeraden Adressen)
* eingeblendet ist (z.B. auf einer Zorro-II-Karte).
*
* Wegen Timing-Problemen mit der Karte werden Lesezugriffe
* aus SID-Registern simuliert.
*
* Die Power-LED ist mit dem Reset-Eingang des SID verbunden,
* d.h. ein kurzes Aus- und Einschalten der LED setzt den SID
* zurück.
*
MACHINE 68020
INCLUDE "exec/types.i"
INCLUDE "exec/macros.i"
XREF _GfxBase
XDEF Reset6581
XDEF ReadFrom6581
XDEF WriteTo6581
XDEF UseSIDCard ;Prefs
SECTION "CODE",CODE
**
** SID zurücksetzen
**
Reset6581 tst.w UseSIDCard
beq 1$
move.l a6,-(sp)
move.l _GfxBase,a6
JSRLIB WaitTOF
bset #1,$bfe001 ;LED aus
JSRLIB WaitTOF
bclr #1,$bfe001 ;LED an
move.l (sp)+,a6
1$ rts
**
** Aus einem SID-Register lesen
** d0.w: Registernummer ($00-$1f)
** Rückgabe: d0.b: Byte
**
** Darf das obere Wort von d0 und d1 nicht verändern!
** Darf a1 nicht verändern!
**
ReadFrom6581 cmp.b #$19,d0
beq ReadFF
cmp.b #$1a,d0
beq ReadFF
cmp.b #$1b,d0
beq ReadRnd
moveq #0,d0
rts
ReadFF move.b #-1,d0 ;A/D-Wandler
rts
ReadRnd move.b $dff007,d0 ;Zufallswert
rts
**
** In ein SID-Register schreiben
** d0.w: Registernummer ($00-$1f)
** d1.b: Byte
**
** Darf das obere Wort von d0 und d1 nicht verändern!
**
WriteTo6581 tst.w UseSIDCard(pc)
beq 1$
lea $a00001,a0 ;SID-Karte
move.b d1,(a0,d0.w*2)
1$ rts
**
** Datenbereich
**
; Flag: SID-Karte ansprechen
UseSIDCard dc.w 0
END